package ru.niir.goodfil.utils.filters;

import java.io.Serializable;

import static ru.niir.goodfil.utils.Utils.s;

/**
 * Класс для фильтрации клиентов
 */
public class ClientsFilter implements Serializable {
    /**
     * Наименование компании
     */
    private String name;

    /**
     * Почта клиента
     */
    private String email;

    /**
     * Город клиента (по фактическому адресу)
     */
    private String addressFact;

    /**
     * Идентификатор клиентской группы
     */
//    private long clientGroupId = -1;

    /**
     * Идентификатор курирущего менеджера
     */
    private long managerId = -1;

    /**
     * Флаг, позволяющий запретить изменение поля managerId
     */
    private boolean managerId_isLocked = false;

    /**
     * Только действующих (без архива)
     */
    private boolean isActive = true;

    private String repuplic;

    private String region;

    private String kray;

    private String city;

    private String street;

    private String house;

    private long clientStateId = -1;

    /**
     * Заблокировать идентификатор курирующего менеджера для изменения
     *
     * @param managerId идентификатор курирующего менеджера (значение, которое защелкиваем)
     */
    public void lockManagerId(long managerId) {
        this.managerId = managerId;
        this.managerId_isLocked = true;
    }

    /**
     * Снять блокировку идентификатора курирующего менеджера
     */
    public void unlockManagerId() {
        this.managerId = -1;
        this.managerId_isLocked = false;
    }

    public static ClientsFilter byName(String name) {
        ClientsFilter filter = new ClientsFilter();
        filter.setName(s(name));
        return filter;
    }

    /**
     * Наименование компании
     */
    public String getName() {
        return name;
    }

    /**
     * Наименование компании
     */
    public void setName(String name) {
        this.name = name;
    }

    /**
     * Идентификатор клиентской группы
     */
//    public long getClientGroupId()
//    {
//        return clientGroupId;
//    }

    /**
     * Идентификатор клиентской группы
     */
//    public void setClientGroupId(long clientGroupId)
//    {
//        this.clientGroupId = clientGroupId;
//    }

    /**
     * Идентификатор курирущего менеджера
     */
    public long getManagerId() {
        return managerId;
    }

    /**
     * Идентификатор курирущего менеджера
     */
    public void setManagerId(long managerId) {
        if (!managerId_isLocked) this.managerId = managerId;
    }


    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public String getCity() {
        return city;
    }

    public void setCity(String city) {
        this.city = city;
    }

    public boolean isActive() {
        return isActive;
    }

    public void setActive(boolean isActive) {
        this.isActive = isActive;
    }

    public String getAddressFact() {
        return addressFact;
    }

    public void setAddressFact(String addressFact) {
        this.addressFact = addressFact;
    }

    public String getRepuplic() {
        return repuplic;
    }

    public void setRepuplic(String repuplic) {
        this.repuplic = repuplic;
    }

    public String getRegion() {
        return region;
    }

    public void setRegion(String region) {
        this.region = region;
    }

    public String getHouse() {
        return house;
    }

    public void setHouse(String house) {
        this.house = house;
    }

    public String getKray() {
        return kray;
    }

    public void setKray(String kray) {
        this.kray = kray;
    }

    public String getStreet() {
        return street;
    }

    public void setStreet(String street) {
        this.street = street;
    }

    public long getClientStateId() {
        return clientStateId;
    }

    public void setClientStateId(long clientStateId) {
        this.clientStateId = clientStateId;
    }
}
